from django.db import models

# Create your models here.
"""

1.模型类需要继承自models.Model
2.定义属性
    id 系统默认生成
    属性名=models.类型(选项)
    2.1 属性名对应的就是字段名
        属性名不能使用pytjon，mysql关键字
        不要使用连续的下划线（__）
   2.2 类型 mysql的类型
   2.3 选项 是否有默认值，是否唯一，是否为null
            CharField 必须设置max_length
            verbose_name 主要是admin站点使用
    3. 改变表的名称
        默认表的名称是： 子应用名_类名(小写)
        修改表的名字
"""
class BookInfo(models.Model):
    name = models.CharField(max_length=10,unique=True)
    pub_date=models.DateField(null=True)
    readcount=models.IntegerField(default=0)
    commentcount=models.IntegerField(default=0)
    is_delete=models.BooleanField(default=False)
    #1对多的关系模型中，系统会自动添加一个关联模型类名小写_set
    #peopleinfo_set = [PeopleInfo,PeopleInfo,.....]

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'book_info' #修改表的名字
        verbose_name = '书籍管理' #admin站点使用

class PeopleInfo(models.Model):

    #定义一个有序字典
    GENDER_CHOICE = (
    (1,'male'),
    (2,'female')
    )
    name = models.CharField(max_length=10,unique=True)
    gender = models.SmallIntegerField(choices=GENDER_CHOICE,default=1)
    description = models.CharField(max_length=100,null=True)
    is_delete = models.BooleanField(default=False)

    #外键
    #系统会自动为外键添加_id

    #外键的级联操作
    #主表 和 从表
    # 1 对 多

    #主表的一条数据如果删除
    #从表存在关联的数据，关联的数据怎么办
    #SET_NULL/设定特定的值
    #抛出异常，禁止删除
    #主从表中的数据一起删除（级联删除）
    book = models.ForeignKey(BookInfo,on_delete=models.CASCADE)

    class Meta:
        db_table='peopleinfo'

    def __str__(self):
        return self.name
    #
    # class Dog(object):
    #     pass
    # class Person(object):
    #     little_dog = Dog()
